00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _DETCPCONNECTION_HPP
00029 #define _DETCPCONNECTION_HPP
00030
00031 #ifdef _DENET_HPP
00032 #include "deNet.hpp"
00033 #endif
00034
00035 #ifdef _DENETWINSOCK_HPP
00036 #include "deNetWinsock.hpp"
00037 #endif
00038
00039 #ifndef _DECONNECTION_HPP
00040 #include "deConnection.hpp"
00041 #endif
00042
00043 #include <VECTOR>
00044 typedef std::vector< deTCPOVERLAPPED* > aPendingTCPSends;
00045
00046 typedef class DENET_API deTCPConnection : public deConnection
00047 {
00048 friend class deTCPConnectionProvider;
00049
00050 public:
00051 deTCPConnection(void);
00052 virtual ~deTCPConnection(void);
00053
00054 struct TCPConnectionInfo
00055 {
00056 GROUP gGroup;
00057 WSAEVENT hEvent;
00058 SOCKET hSocket;
00059 SOCKADDR_IN address;
00060 };
00061
00062 const TCPConnectionInfo& GetConnectionInfo(void) const { return m_ConnectionInfo; }
00063
00064 void ReleasePendingTCPSend( deTCPOVERLAPPED * pOver );
00065
00066 protected:
00067
00068 virtual eNetError OnAttemptReset( DWORD dwFlags = NULL );
00069 virtual eNetError OnBindAsServer( DWORD dwFlags = NULL );
00070 virtual eNetError OnRecieve( DWORD dwFlags = NULL );
00071 virtual eNetError OnConnectTo( deNetAddress * pAddress );
00072 virtual eNetError OnSend( WORD pNetMsgID, const void * pBuff, DWORD iSize, DWORD dwFlags = NULL );
00073 virtual eNetError OnDisconnect( DWORD dwFlags = NULL );
00074
00075 private:
00076
00077 aPendingTCPSends m_aPendingTCPSends;
00078 TCPConnectionInfo m_ConnectionInfo;
00079
00080 } deTCPConnection, *pdeTCPConnection;
00081
00082 #endif